#include "rclcpp/rclcpp.hpp"

using namespace std::chrono_literals;

namespace ns_parameters
{
    class parameters : public rclcpp::Node
    {
    private:
        rclcpp::TimerBase::SharedPtr timer_;
        void timer_cb()
        {
            rclcpp::Parameter get_para = this->get_parameter("my_custom_para");
            std::string str = std::to_string(get_para.as_int());
            RCLCPP_INFO(this->get_logger(),std::to_string(get_para.as_int()).c_str());

            // 两者的区别在于 一个是批量修改参数  
            // std::vector<rclcpp::Parameter> set_para{rclcpp::Parameter("my_custom_para", 10)};
            // this->set_parameters(set_para);
            // 一个是单独修改某一个参数
            rclcpp::Parameter set_para{"my_custom_para",11};
            this->set_parameter(set_para);
        }
    public:
        parameters(/* args */);
        ~parameters();
    };
    
    parameters::parameters(/* args */) : Node("custom_parameters")
    {
        this->declare_parameter("my_custom_para",10);      //声明参数
        timer_ =this->create_wall_timer(500ms,std::bind(&parameters::timer_cb,this));
    }
    
    parameters::~parameters()
    {
    }
    
} // namespace ns_parameters


int main(int argc, char const *argv[])
{
    rclcpp::init(argc,argv);
    auto node = std::make_shared<ns_parameters::parameters>();
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
